#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <functional>

using namespace std;
using namespace std::placeholders;

bool check_size(const string &, string::size_type);

int main()
{
    string s = "hello";
    vector<string> words{"a", "bb", "ccc"};
    int sz = 3;
    // check6 是一个可调用对象，接受一个 string 类型的参数
    // 并用此 string 和值 6 来调用 check_size
    auto check6 = bind(check_size, _1, 6);
    bool b1 = check6(s);    // check6(s) 会调用 check_size(s, 6)
    cout << b1 << endl;

    // auto wc = find_if(words.begin(), words.end(), 
    //                     [sz] (const string &a) { return a.size() >= sz; });
    auto wc = find_if(words.begin(), words.end(), bind(check_size, _1, sz));
}

bool check_size(const string &s, string::size_type sz)
{
    return s.size() >= sz;
}